package com.hongji.lms5xxcommunicator.grid.export;

import lombok.Value;

import java.util.List;

/**
 * <p>
 * 推送前端的载荷：包含增量点位与当前总体积。<br/>
 * 通常用于 {@code RasterGrid.mergeAndExpandWithDelta()} 的结果返回。
 * </p>
 *
 * <p><b>字段说明</b></p>
 * <ul>
 *   <li>{@code updates}：本批受影响的格点列表；若发生扩容则为全量有数据格。</li>
 *   <li>{@code volume}：当前总体积，按 RasterGrid 的 baseline/clampNegative 策略计算。</li>
 *   <li>{@code full}：是否为全量导出。
 *       <ul>
 *         <li>{@code true}：扩容后全量重绘。</li>
 *         <li>{@code false}：仅增量更新。</li>
 *       </ul>
 *   </li>
 * </ul>
 *
 * <p><b>用法</b></p>
 * <ol>
 *   <li>由 {@link com.hongji.lms5xxcommunicator.grid.RasterGrid} 在合并点时生成。</li>
 *   <li>推送至前端或 PLC，用于同步实时状态。</li>
 * </ol>
 */
@Value
public class GridDeltaPayload {
    /** 本批受影响格（扩容时为全量有数据格） */
    List<GridPoint> updates;

    /** 当前总体积（按 RasterGrid 的 baseline/clampNegative 计算） */
    double volume;

    /** 是否是全量（true=扩容后全量重绘；false=只增量） */
    boolean full;
}
